Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №3
З дисципліни: «Засоби системного програмування»
На тему: «Дослідження способів представлення даних в пам’яті комп’ютера з архітектурою х86.»
Мета: вивчити способи задання констант та змінних в Асемблері, набути навики інтерпретування даних в пам’яті комп’ютера з архітектурою х86.
ЗАВДАННЯ:
Створити *.exe програму, яка розміщує в пам’яті даних комп’ютера, операнди, що задані варіантом. Вхідні операнди А, В, С, D, E, F з індексом u вважати без знаковими і довжиною в байтах, згідно з індексу, з індексом fs вважати з рухомою комою одинарної точності (32 біти), з індексом fd вважати з рухомою комою подвійної точності (64 біти), з індексом fe вважати з рухомою комою розширеної точності (80 біт); операнди А, В, С розмістити в сегменті DATA з довільним вирівнюванням сегменту, D, E, F розмістити в сегменті DATA1 з вирівнюванням сегменту BYTE, WORD, DWORD, PARA, PAGE (див. [5]). Крім цього операнд А є масивом з 3-ох елементів. При оголошені призначити операндам початкові значення використовуючи всі можливі системи лічби. К – константа, довжина якої визначається значенням(згідно варіанту), а значення задане в шістнадцятковому форматі. Для її опису слід використати директиву EQU. Задати одну мітку в довільному місці сегменту даних. В одному з сегментів на вибір розташувати змінну Message db 'Прізвище',13,10,'$', де 'Прізвище' – прізвище виконавця роботи, яке вивести на екран.
За допомогою Debug, дослідити представлення даних в пам’яті комп’ютера для кожного з варіантів вирівнювання (продемонструвати розміщення даних та здійснити інтерпретацію).
Скласти звіт про виконану роботу з приведенням тексту програми з коментарями, дампу пам’яті для кожного з варіантів вирівнювання стеку, та аналітично інтерпретувати дані для кожної зі змінних.
Дати відповідь на контрольні запитання.
ВАРІАНТИ ЗАВДАНЬ:
№
Операнди
K
1
A2,B1u,C4,Dfd,E10,F3, K
1254021
2
A2,B4u,Cfs,D8u,E10,F5, K
202
3
A4,B3u,C4,Dfd,E10,F8, K
37788663
4
A1,B4u,Cfs,D10u,E1,F8, K
45694
5
A8,B1u,C4,Dfd,E10,F5, K
505
6
A2,B4u,Cfs,D8u,E10,F7, K
6DD02316
7
A4,B5u,C4,Dfs,E10,F8, K
717
8
A4,B2u,Cds,D10u,E1,F8, K
88
9
A1,B3u,C4,Dfd,E8,F2, K
29
10
A2,B5u,Cfs,D8u,E10,F4, K
2310
11
A4,B3u,C4,Dfd,E8,F8, K
311
12
A2,B4u,Cfd,D10u,E1,F8, K
7055E0AC
13
A8,B1u,C4,Dfe,E2,F5, K
2513
14
A2,B3u,Cfd,D8u,E10,F1, K
614
15
A4,B5u,C4,Dfe,E10,F8, K
4569600F
16
A1,B3u,Cfe,D10u,E4,F8, K
616
17
A1,B1u,C3,Dfe,E10,F4, K
1017
18
A2,B4u,Cfs,D8u,E10,F5, K
56987018
19
A4,B3u,C4,Dfd,E10,F8, K
4019
20
A8,B4u,Cfe,D10u,E1,F8, K
18932020
21
A10,B1u,C4,Dfs,E8,F5, K
21
22
A8,B4u,Cfd,D8u,E10,F7, K
45781022
23
A4,B5u,C4,Dfe,E10,F8, K
7AA02023
24
A2,B2u,Cfs,D10u,E1,F8, K
74569024
25
A1,B3u,C4,Dfd,E8,F4, K
2B05025
26
A2,B6u,Cfs,D8u,E10,F4, K
6C26
27
A4,B3u,C2,Dfs,E8,F8, K
A77627
28
A8,B4u,Cfd,D10u,E1,F2, K
3FF28
29
A10,B1u,C4,Dfe,E2,F5, K
12A0C029
30
A2,B6u,Cfd,D8u,E10,F1, K
25630
Мій варіант: №2
Лістинг програми
STACK SEGMENT PARA STACK 'STACK'
db 100h DUP (?)
STACK ENDS
DATA SEGMENT PAGE 'DATA'
HelloMessage db 'Bakay',13,10,'$'
A dw 0123Q,0ABCh, 9874
B dd 4513fa12h
C dd 3.14e3; 32/8=4 byte
DATA ENDS
DATA1 SEGMENT DWORD 'DATA'
LBL LABEL BYTE
D dq 1235674489ABCDEFh ; 16 digit (unsigned)
E dt 123567114489ABCDEFh ; 20 digit (signed), >0
F dw 00BCh, 4BCDh, 2ADBh ; 5 byte = 3*2 byte, signed
K equ 202h
DATA1 ENDS
CODE SEGMENT PARA 'CODE'
ASSUME cs:CODE, ds:DATA
ProgramStart:
push ds ;initialize stack segment
sub ax,ax ;initialize stack segment
push ax ;initialize stack segment
mov ax,Data ;initialize data segment
mov ds,ax ;initialize data segment
mov ah,09 ;display message
mov dx,OFFSET HelloMessage
int 21h
mov ah,4Ch ;DOS terminate program function
int 21h ;end of the program
CODE ENDS
END ...